/* 
客户端和 服务器
客户端:负责消费资源的电脑  服务器:负责对外提供网络资源的电脑

http模块是node.js提供用来创建web服务器的模块
语法:http.createServer()方法 就可以把电脑变成服务器


ip地址:(a.b.c.d) abcd都是0到255之间的整数 类似于身份证号 具有唯一性
在windows的终端里运行 ping www.baidu.com 即可获取百度服务器的ip地址
在开发中 在自己的浏览器中输入127.0.0.1 就能把自己的电脑当成服务器

域名和域名服务器:
ip地址是数字  域名地址就是字符串  ip和域名是一一对应的关系  这种关系存放在域名服务器
域名服务器可以把ip和域名进行互相转换

端口号:一个页面可以运行多个web服务,每个web服务都对应一个唯一的端口号
在实际应用中 URL中的80端口可以被省略
*/

// 1. 导入http模块
const http = require('http')

// 2. 创建服务器实例 并接收
const server = http.createServer()

// 3. 给服务器实例绑定request事件  监听客户端请求
server.on('request', (req, res) => {
  // req 请求对象 包含了与客户端相关的数据和属性  例 req.url 客户端请求地址 req.method 客户端请求类型
  // res是返还(响应)对象 包含了与服务器相关的数据和属性 比如:要发送到客户端的字符串

  const url = req.url  // 客户端请求的url地址
  const method = req.method // 客户端请求数据的方式

  // 这里注意输出中文客户端会乱码 解决: 设置响应头
  const str = `您请求的地址是 ${url},您请求的方式是 ${method}`
  res.setHeader('Content-Type', 'text/html;charset=utf-8')

  // 向客户端发送str里面的文本内容
  res.end(str)
})

// 1.4启动服务器
// 服务器.listen()方法启动服务器 第一个参数启动的端口 第二个参数启动成功的回调函数
server.listen(80, () => {
  // 端口是80 可以省略
  console.log('server running at http://127.0.0.1:80');
})

// 只要在浏览器访问地址 就会触发绑定事件request和回调函数 在终端输出